package errno

// 定义一个错误结构体 统一管理程序错误  定义程序自定义错误
type Errno struct {
	Code    int
	Message string
}

/*
error类型就是一个接口， 只要实现Error() 方法都属于error类
type error interface {
	Error() string
}
*/

// 给Errno结构体添加Error()方法
func (e Errno) Error() string {
	return e.Message
}

// 解析定制的错误  --》标准化返回
// 没错误返回OK， 有错误返回对应的错误，未知错误返回InternalServerError
func DecodeErr(err error) (int, string) {
	if err == nil {
		return OK.Code, OK.Message
	}
	//type -swith
	switch typed := err.(type) {
	case *Errno:
		return typed.Code, typed.Message
	default:
		return InternalServerError.Code, InternalServerError.Message

	}
}
